<?php
namespace app\index\controller;
use app\index\controller\Base;
use app\index\model\Student as StudentModel;
use think\Request;

class Student extends Base{

	// 查询学生列表
	public function studentList(){
		// 获取所有学生信息
		$studentList=StudentModel::paginate(5);

		// 获取记录数量
		$count=StudentModel::count();

		// 给结果集每个模板对象添加班级关联数据
		foreach ($studentList as $value) {
			$value->grade=$value->grade->name;
		}

		// 分配数据
		$this->assign('studentList',$studentList);
		$this->assign('count',$count);

		// 渲染模板
		return $this->fetch();
	}

	// 状态停用和启用
	public function setStatus(Request $request){
		// 获取id
		$student_id=$request->param('id');

		// 查询数据
		$result=StudentModel::get($student_id);

		// 判断状态并更新
		if($result->getData('status')==1){
			StudentModel::update(['status'=>0],['id'=>$student_id]);
		}else{
			StudentModel::update(['status'=>1],['id'=>$student_id]);
		}

	}

	// 渲染学生编辑界面
	public function studentEdit(Request $request){
		// 获取id
		$student_id=$request->param('id');

		// 查询数据
		$result=StudentModel::get($student_id);

		// 获取关联表：grade数据
		$result->grade=$result->grade->name;

		// 分配数据给模板
		$this->assign('student_info',$result);

		// 将班级表中所有数据赋值给当前模板
		$this->assign('gradeList',\app\index\model\Grade::all());

		return $this->fetch();
	}

	// 更新编辑数据
	public function doEdit(Request $request){
		// 获取表单数据
		$data=$request->param();

		// 设置更新条件
		$condition=['id'=>$data['id']];

		//更新数据库
		$result=StudentModel::update($data,$condition);

		// 设置初始返回数据
		$status=0;
		$message='更新失败';

		// 检测更新结果
		if($result==true){
			$status=1;
			$message='更新成功';
		}

		// 返回数据
		return ['status'=>$status,'message'=>$message];
	}

	// 软删除
	public function deleteStudent(Request $request){
		// 获取id
		$student_id=$request->param('id');

		// 更新删除标识
		StudentModel::update(['is_delete'=>1],['id'=>$student_id]);

		// 执行删除
		StudentMOdel::destroy($student_id);
	}

	// 批量恢复
	public function unDelete(){
		StudentModel::update(['delete_time'=>NULL],['is_delete'=>1]);
	}

	// 渲染添加学生界面
	public function studentAdd(){
		// 将班级表中所有数据赋值给当前模板
		$this->assign('gradeList',\app\index\model\Grade::all());

		// 渲染模板
		return $this->fetch();
	}

	// 添加学生
	public function doAdd(Request $request){
		// 获取数据，排除班级数据
		$data=$request->param();

		// 插入数据
		$result=StudentModel::create($data);

		// 设置返回数据初始化
		$status=0;
		$message='添加失败';

		// 检测添加结果
		if($result==true){
			$status=1;
			$message='添加成功';
		}

		// 返回数据
		return ['status'=>$status,'message'=>$message];
	}

}